#include "linklist.h"

//1.初始化
void init_linklist(list_pnode *H)
{
	*H = (list_pnode)malloc(sizeof(list_node)); //创建头节点
	if (*H == NULL) {
		perror("malloc");
		exit(1);
	}
	(*H)->next = NULL;

}

//2.插入节点, pnode:插入位置前一个节点的指针, new_pnode:要插入的节点指针
//不管是头尾中间,只要有前一个节点的指针都可以插入
void insert_linklist(list_pnode pnode, list_pnode new_pnode)
{
	new_pnode->next = pnode->next;
	pnode->next = new_pnode;

}

//3.遍历,只要有头指针就能遍历
void show_linklist(list_pnode head) 
{
	list_pnode pnode;
	printf("[head]");
	for (pnode = head->next; pnode != NULL ; pnode = pnode->next) 
		printf("--> %d", pnode->data);
	printf("\n");

}


//4.删除节点 删除pnode指向的后面的节点
void remove_linklist(list_pnode pnode)
{
	list_pnode ptmp;
	//判断链表是否为空,如果pnode->next是空就没有节点不能删除
	if (isempty_linklist(pnode)) {
		printf("链表为空,不能删除!\n");
		return ;
	}
	ptmp = pnode->next; //找到要删除的节点
	pnode->next = ptmp->next;
	free(ptmp);
}

bool isempty_linklist(list_pnode pnode)
{
	if (pnode->next == NULL) 
		return true;
	else 
		return false;
}


